958fbd528851f88506ea3ee441df9c7e7b10f566,Phosphor/src/edu/columbia/cs/psl/phosphor/instrumenter/TaintTrackingClassVisitor.java,TaintTrackingClassVisitor,visitEnd,#,535

Before Change


					mv.visitFieldInsn(Opcodes.PUTFIELD, className, TaintUtils.TAINT_FIELD, Configuration.TAINT_TAG_DESC);
					if (className.equals("java/lang/String")) {
						//Also overwrite the taint tag of all of the chars behind this string
						mv.visitVarInsn(Opcodes.ALOAD, 0);
						mv.visitFieldInsn(Opcodes.GETFIELD, className, "value" + TaintUtils.TAINT_FIELD, Configuration.TAINT_TAG_ARRAYDESC);
						mv.visitVarInsn(Opcodes.ILOAD, 1);
						mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(TaintChecker.class), "setTaints", "([II)V", false);

After Change


					mv.visitFieldInsn(Opcodes.PUTFIELD, className, TaintUtils.TAINT_FIELD, Configuration.TAINT_TAG_DESC);
					if (className.equals("java/lang/String")) {
						//Also overwrite the taint tag of all of the chars behind this string
						mv.visitVarInsn(Opcodes.ALOAD, 0);
						mv.visitVarInsn(Opcodes.ALOAD, 0);
						mv.visitFieldInsn(Opcodes.GETFIELD, className, "value", "[C");//Force the StringTaintVerifyingMV to make sure there is a taint array here
						mv.visitInsn(Opcodes.ARRAYLENGTH);
						mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_INT);
						mv.visitFieldInsn(Opcodes.PUTFIELD, className, "value" + TaintUtils.TAINT_FIELD, Configuration.TAINT_TAG_ARRAYDESC);

						mv.visitVarInsn(Opcodes.ALOAD, 0);
						mv.visitFieldInsn(Opcodes.GETFIELD, className, "value" + TaintUtils.TAINT_FIELD, Configuration.TAINT_TAG_ARRAYDESC);
						mv.visitVarInsn(Opcodes.ILOAD, 1);
						mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(TaintChecker.class), "setTaints", "([II)V", false);